<html lang="en">
<strong>MapStruct support for IntelliJ IDEA</strong>
<br/>
<br/>
<a href="https://mapstruct.org/">Website</a> |
<a href="https://github.com/mapstruct/mapstruct-idea">GitHub</a> |
<a href="https://github.com/mapstruct/mapstruct-idea/issues">Issue Tracker</a> |
<br/>
<br/>
This plugin gives some assistance in projects that use <a href="https://mapstruct.org/">MapStruct</a> to generate bean mapping code.
<br/>
<br/>
MapStruct is a Java annotation processor for the generation of type-safe and performant mappers for Java bean classes.
<br />
<br />
If you want to discuss specific topics, then ping me (@filiphr) in the MapStruct users
<a href="https://gitter.im/mapstruct/mapstruct-users">chat room on gitter</a>.
<br/>
<b>Features:</b>
<ul>
    <li>Code Completion:</li>
    <li>
    <ul>
        <li>Completion of <code>target</code> and <code>source</code> properties in <code>@Mapping</code> annotation (nested properties also work)</li>
        <li>Completion of <code>target</code> and <code>source</code> properties in <code>@ValueMapping</code> annotation</li>
        <li>Completion of <code>componentModel</code> in <code>@Mapper</code> and <code>@MapperConfig</code> annotations</li>
        <li>Completion of <code>qualifiedByName</code> in <code>@Mapping</code> annotation</li>
    </ul>
    </li>
    <li>Go To Declaration for properties in <code>target</code> and <code>source</code> to setters / getters</li>
    <li>Find usages of properties in <code>target</code> and <code>source</code> and find usages of setters / getters in <code>@Mapping</code> annotations</li>
    <li>Go To Declaration for <code>Mapping#qualifiedByName</code></li>
    <li>Highlighting properties in <code>target</code> and <code>source</code></li>
    <li>Refactoring support for properties and methods renaming</li>
    <li>Errors and Quick Fixes:</li>
    <li>
    <ul>
        <li><code>@Mapper</code> or <code>@MapperConfig</code> annotation missing</li>
        <li>Unmapped target properties with quick fixes: Add unmapped target property and Ignore unmapped target property.
            Uses <code>unmappedTargetPolicy</code> to determine the severity that should be used</li>
        <li>No <code>source</code> defined in <code>@Mapping</code> annotation</li>
        <li>More than one <code>source</code> in <code>@Mapping</code> annotation defined with quick fixes: Remove <code>source</code>. Remove <code>constant</code>. Remove <code>expression</code>. Use <code>constant</code> as <code>defaultValue</code>. Use <code>expression</code> as <code>defaultExpression</code>.</li>
        <li>More than one default source in <code>@Mapping</code> annotation defined with quick fixes: Remove <code>defaultValue</code>. Remove <code>defaultExpression</code>.</li>
        <li><code>target</code> mapped more than once by <code>@Mapping</code> annotations with quick fixes: Remove annotation and change target property.</li>
        <li><code>*</code> used as a source in <code>@Mapping</code> annotations with quick fixes: Replace <code>*</code> with method parameter name.</li>
        <li>Unknown reference inspection for <code>source</code> and <code>target</code> in <code>@Mapping</code> and <code>@ValueMapping</code> annotation. </li>
        <li>Unknown reference inspection for <code>qualifiedByName</code> in <code>@Mapping</code> annotation. </li>
    </ul>
    </li>
</ul>
</html>
